package Negocio;

import java.util.ArrayList;
import java.util.List;

import DTO.DTO_Comanda;
import DTO.DTO_Mesa;
import DTO.DTO_Pedido;
import Entities.Entity_Mesa;

public abstract class Mesa {
	
	protected int idMesa;
	protected Mozo mozo;
	protected int numero;
	protected List<Pedido> pedidos;
	protected int cantPersonas;
	protected String estado;
	protected int cantMaxPersonas;
	protected List<Comanda> comandas;
	
	//CONSTRUCTORES
	public Mesa(int idMesa, Mozo mozo, int numero, List<Pedido> pedidos, int cantPersonas, String estado, int cantMaxPersonas, List<Comanda> comandas) {
		super();
		this.idMesa = idMesa;
		this.mozo = mozo;
		this.numero = numero;
		this.pedidos = pedidos;
		this.cantPersonas = cantPersonas;
		this.estado = estado;
		this.cantMaxPersonas = cantMaxPersonas;
		this.comandas = comandas;
	}
	
	public Mesa(DTO_Mesa mesa){
		this.cantMaxPersonas = mesa.getCantMaxPersonas();
		this.cantPersonas = mesa.getCantPersonas();
		this.comandas = new ArrayList<Comanda>();
		for(DTO_Comanda c : mesa.getComandas()){
			this.comandas.add(new Comanda(c));
		}
		this.estado = mesa.getEstado();
		this.idMesa = mesa.getIdMesa();
		Mozo mozo = new Mozo(mesa.getMozo());
		this.mozo = mozo;
		this.numero = mesa.getNumero();
		this.pedidos = new ArrayList<Pedido>();
		for(DTO_Pedido p: mesa.getPedidos()){
			pedidos.add(new Pedido(p));
		}
	}
	
	public Mesa(Entity_Mesa mesa){
		this.cantMaxPersonas = mesa.getCantMaxPersonas();
		this.cantPersonas = mesa.getCantPersonas();
		/*this.comandas = new ArrayList<Comanda>();
		for(DTO_Comanda c : mesa.getComandas()){
			this.comandas.add(new Comanda(c));
		}*/
		this.estado = mesa.getEstado();
		this.idMesa = mesa.getIdMesa();
		Mozo mozo = new Mozo(mesa.getMozo());
		this.mozo = mozo;
		this.numero = mesa.getNumero();
		/*this.pedidos = new ArrayList<Pedido>();
		for(Entity_Pedido p: mesa.getPedidos()){
			pedidos.add(new Pedido(p));
		}*/
	}
	public Mesa() {
	}

	//GET & SET
	public int getIdMesa() {
		return idMesa;
	}

	public void setIdMesa(int idMesa) {
		this.idMesa = idMesa;
	}

	public Mozo getMozo() {
		return mozo;
	}

	public void setMozo(Mozo mozo) {
		this.mozo = mozo;
	}

	public int getNumero() {
		return numero;
	}

	public void setNumero(int numero) {
		this.numero = numero;
	}

	public List<Pedido> getPedidos() {
		return pedidos;
	}

	public void setPedidos(List<Pedido> pedidos) {
		this.pedidos = pedidos;
	}

	public int getCantPersonas() {
		return cantPersonas;
	}

	public void setCantPersonas(int cantPersonas) {
		this.cantPersonas = cantPersonas;
	}

	public String getEstado() {
		return estado;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}

	public int getCantMaxPersonas() {
		return cantMaxPersonas;
	}

	public void setCantMaxPersonas(int cantMaxPersonas) {
		this.cantMaxPersonas = cantMaxPersonas;
	}

	public List<Comanda> getComandas() {
		return comandas;
	}

	public void setComandas(List<Comanda> comandas) {
		this.comandas = comandas;
	}
	
	//METODOS DE NEGOCIO
	
	public abstract DTO_Mesa toDTO();
	
}
